home *** CD-ROM | disk | FTP | other *** search
/ Freelog 125 / Freelog_MarsAvril2015_No125.iso / Musique / Quod Libet / quodlibet-3.3.0-installer.exe / bin / quodlibet / qltk / scanbox.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2014-12-31  |  5KB  |  105 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.7)
  3.  
  4. import os
  5. from gi.repository import Gtk
  6. from gi.repository import Pango
  7. from quodlibet import const
  8. from quodlibet.qltk.chooser import FolderChooser
  9. from quodlibet.qltk.views import RCMHintedTreeView
  10. from quodlibet.util.path import fsdecode, unexpand
  11. from quodlibet.util.library import get_scan_dirs, set_scan_dirs
  12. from quodlibet.util import connect_obj
  13.  
  14. def get_init_select_dir():
  15.     scandirs = get_scan_dirs()
  16.     if scandirs and os.path.isdir(scandirs[-1]):
  17.         return scandirs[-1]
  18.     return None.HOME
  19.  
  20.  
  21. class ScanBox(Gtk.HBox):
  22.     """A box for editing the Library's scan directories"""
  23.     
  24.     def __init__(self):
  25.         super(ScanBox, self).__init__(spacing = 6)
  26.         self.model = model = Gtk.ListStore(str)
  27.         view = RCMHintedTreeView(model = model)
  28.         view.set_fixed_height_mode(True)
  29.         view.set_headers_visible(False)
  30.         view.set_tooltip_text(_('Songs in the listed folders will be added to the library during a library refresh'))
  31.         menu = Gtk.Menu()
  32.         remove_item = Gtk.ImageMenuItem(label = Gtk.STOCK_REMOVE, use_stock = True)
  33.         menu.append(remove_item)
  34.         menu.show_all()
  35.         view.connect('popup-menu', self._ScanBox__popup, menu)
  36.         connect_obj(remove_item, 'activate', self._ScanBox__remove, view)
  37.         sw = Gtk.ScrolledWindow()
  38.         sw.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
  39.         sw.set_shadow_type(Gtk.ShadowType.IN)
  40.         sw.add(view)
  41.         sw.set_size_request(-1, max(sw.size_request().height, 80))
  42.         render = Gtk.CellRendererText()
  43.         render.set_property('ellipsize', Pango.EllipsizeMode.END)
  44.         
  45.         def cdf(column, cell, model, iter, data):
  46.             row = model[iter]
  47.             cell.set_property('text', unexpand(row[0]))
  48.  
  49.         column = Gtk.TreeViewColumn(None, render)
  50.         column.set_cell_data_func(render, cdf)
  51.         column.set_sizing(Gtk.TreeViewColumnSizing.FIXED)
  52.         view.append_column(column)
  53.         add = Gtk.Button(stock = Gtk.STOCK_ADD)
  54.         add.connect('clicked', self._ScanBox__add)
  55.         remove = Gtk.Button(stock = Gtk.STOCK_REMOVE)
  56.         selection = view.get_selection()
  57.         selection.set_mode(Gtk.SelectionMode.MULTIPLE)
  58.         selection.connect('changed', self._ScanBox__select_changed, remove)
  59.         selection.emit('changed')
  60.         connect_obj(remove, 'clicked', self._ScanBox__remove, view)
  61.         vbox = Gtk.VBox(spacing = 6)
  62.         vbox.pack_start(add, False, True, 0)
  63.         vbox.pack_start(remove, False, True, 0)
  64.         self.pack_start(sw, True, True, 0)
  65.         self.pack_start(vbox, False, True, 0)
  66.         paths = map(fsdecode, get_scan_dirs())
  67.         for path in paths:
  68.             model.append(row = [
  69.                 path])
  70.         
  71.         for child in self.get_children():
  72.             child.show_all()
  73.         
  74.  
  75.     
  76.     def __popup(self, view, menu):
  77.         return view.popup_menu(menu, 0, Gtk.get_current_event_time())
  78.  
  79.     
  80.     def __select_changed(self, selection, remove_button):
  81.         remove_button.set_sensitive(selection.count_selected_rows())
  82.  
  83.     
  84.     def __save(self):
  85.         set_scan_dirs([ r[0] for r in self.model ])
  86.  
  87.     
  88.     def __remove(self, view):
  89.         view.remove_selection()
  90.         self._ScanBox__save()
  91.  
  92.     
  93.     def __add(self, *args):
  94.         initial = get_init_select_dir()
  95.         chooser = FolderChooser(self, _('Select Directories'), initial)
  96.         fns = chooser.run()
  97.         chooser.destroy()
  98.         for fn in fns:
  99.             self.model.append(row = [
  100.                 fn])
  101.         
  102.         self._ScanBox__save()
  103.  
  104.  
  105.